Stikman fails.py
Stikman fails.py — Python Source, 6 KB (6269 bytes)
Dateiinhalt
from visual import * scene.tittel="Just Baum" scene.autoscale=False scene.userzoom= False scene.userspin= False scene.center=(0,20,0) tex1 = materials.texture(data=materials.loadTGA("Nadel"),mapping = "rectangular") tex2 = materials.texture(data=materials.loadTGA("Gras"),mapping = "sign") scene.forward=(0.0,-0.5,-1.0) scene.stereo = "redcyan" #Klassen class man(frame): def __init__ (self,pos=(0,0,0)): frame.__init__(self) self.koerper=cone (frame=self,pos=(0,0,0),radius=3,length=15,color=color.blue,axis=(0,1,0)) self.kopf=sphere(frame=self,pos=(0,12,0),radius=3) self.muni=0 self.anzeige=label(frame=self ,pos=(0,15,0),text="Pfeile" + str (self.muni)) #self.front=arrow(frame=self,pos=(0,8,0),axis=(10,0,0),shaftwidth=10) self.pos=pos def bewegen (self,schritt): self.pos +=schritt for obj in Kliste: if obj.kollision (self.pos.x,self.pos.z): self.pos -=schritt for obj in Eliste: if obj.kollision (self.pos.x,self.pos.z,self.pos.y): obj.pos.y=-20 self.muni+=1 self.anzeige.text="Pfeile" + str (self.muni) class Baum (frame): def __init__(self,pos=(0,0,0)): frame.__init__(self) self.stamm=cylinder(frame=self,pos=(0,0,0),radius=2,axis=(0,5,0),length=10,material=materials.wood) self.krone=cone (frame=self,pos=(0,8,0),axis=(0,5,0),radius=6,length=20,material=tex1) self.pos=pos def kollision (self,x,z): if x < self.pos.x +4 and x > self.pos.x -4 and z < self.pos.z +4 and z > self.pos.z -4: print("!!!!!!") return True else: return False class Haus (frame): def __init__(self,pos=(0,0,0)): frame.__init__(self) self.mauern=box (frame=self,pos=(0,0,0),length=60,height=40,width=30,color=color.white) self.dach=pyramid (frame=self,pos=(0,20,0),size=(15,65,35),axis=(0,5,0),color=color.red) self.pos=pos def kollision (self,x,z): if x < self.pos.x +30 and x > self.pos.x -30 and z < self.pos.z +15 and z > self.pos.z -15: print("!!!!!!") return True else: return False class Zaun (frame): def __init__(self,pos=(0,0,0)): frame.__init__(self) self.latte1=arrow(frame=self,pos=(-5,0,0),axis=(0,5,0),length=15,color=(0,0,0)) self.latte1=arrow(frame=self,pos=(0,0,0),axis=(0,5,0),length=15,color=(0,0,0)) self.latte1=arrow(frame=self,pos=(5,0,0),axis=(0,5,0),length=15,color=(0,0,0)) self.latte1=arrow(frame=self,pos=(-10,0,0),axis=(0,5,0),length=15,color=(0,0,0)) self.latte1=arrow(frame=self,pos=(10,0,0),axis=(0,5,0),length=15,color=(0,0,0)) self.balken=box(frame=self,pos=(0,6,0),length=20,height=2,width=1,color=(0,0,0)) self.pos=pos def kollision (self,x,z): if x < self.pos.x +10 and x > self.pos.x -10 and z < self.pos.z +2 and z > self.pos.z -2: print("!!!!!!") return True else: return False class PfeilD (frame): def __init__(self,pos=(0,0,0)): frame.__init__(self) self.balken=box(frame=self,pos=(5,6,0),length=10,height=2,width=1,material=materials.wood) self.spitze=pyramid (frame=self,pos=(10,6,0),size=(6,3,3),material=materials.rough) self.federn=pyramid (frame=self,pos=(0,6,0),size=(6,3,3),color=color.red) self.pos=pos def kollision (self,x,z,y): if x < self.pos.x +10 and x > self.pos.x -10 and z < self.pos.z +10 and z > self.pos.z -10 and y < self.pos.y +10 and y > self.pos.y -10: print("!!!!!!") return True else: return False #V V = [] for i in range(0,60): if random.randint(0,50) < 25: V.append(random.randint(-225,-25)) else: V.append(random.randint(25,225)) #konstruktor Man1 = man (pos=(0,0,0)) Man2 = man (pos=(10,0,0)) Boden= box (pos=(0,0,0),length=1,height=500,width=500,material=tex2) Boden.rotate(angle=pi/2, axis=(0,0,1)) Baum1=Baum (pos=(V[0],0,V[1])) Baum2=Baum (pos=(V[2],0,V[3])) Baum3=Baum (pos=(V[4],0,V[5])) Baum4=Baum (pos=(V[6],0,V[7])) Baum5=Baum (pos=(V[8],0,V[9])) Baum6=Baum (pos=(V[10],0,V[11])) Baum7=Baum (pos=(V[48],0,V[49])) Baum8=Baum (pos=(V[50],0,V[51])) Baum9=Baum (pos=(V[52],0,V[53])) Baum10=Baum (pos=(V[54],0,V[55])) Baum11=Baum (pos=(V[56],0,V[57])) Baum12=Baum (pos=(V[58],0,V[59])) Haus1=Haus (pos=(V[12],0,V[13])) Haus2=Haus (pos=(V[14],0,V[15])) Haus3=Haus (pos=(V[16],0,V[17])) Haus4=Haus (pos=(V[18],0,V[19])) Haus5=Haus (pos=(V[20],0,V[21])) Haus6=Haus (pos=(V[22],0,V[23])) Zaun1=Zaun (pos=(V[24],0,V[25])) Zaun2=Zaun (pos=(V[26],0,V[27])) Zaun3=Zaun (pos=(V[28],0,V[29])) Zaun4=Zaun (pos=(V[30],0,V[31])) Zaun5=Zaun (pos=(V[32],0,V[33])) Zaun6=Zaun (pos=(V[34],0,V[35])) PfeilD1=PfeilD (pos=(V[36],0,V[37])) PfeilD2=PfeilD (pos=(V[38],0,V[39])) PfeilD3=PfeilD (pos=(V[40],0,V[41])) PfeilD4=PfeilD (pos=(V[42],0,V[43])) PfeilD5=PfeilD (pos=(V[44],0,V[45])) PfeilD6=PfeilD (pos=(V[46],0,V[47])) Kliste = [Baum1,Baum2,Baum3,Baum4,Baum5,Baum6,Baum7,Baum8,Baum9,Baum10,Baum11,Baum12,Haus1,Haus2,Haus3,Haus4,Haus5,Haus6,Zaun1,Zaun2,Zaun3,Zaun4,Zaun5,Zaun6] Eliste = [PfeilD1,PfeilD2,PfeilD3,PfeilD4,PfeilD5,PfeilD6] #Bewegung spieler def richtung(x): return { 0: (0.0,-0.5,-1.0), 1: (1.0,-0.5,0.0), 2: (0.0,-0.5,1.0), 3: (-1.0,-0.5,0.0), }[x] def brichtung(x): return { 0: (0,0,-1), 1: (1,0,0), 2: (0,0,1), 3: (-1,0,0), }[x] Richtung=0 while True: rate(30) if scene.kb.keys: zeichen = scene.kb.getkey() if zeichen == "up": Man1.bewegen(brichtung(x=Richtung)) #richtung if zeichen == "right": Richtung += 1 if Richtung > 3: Richtung=0 scene.forward=(richtung(x=Richtung)) if zeichen == "left": Richtung += -1 if Richtung < 0: Richtung=3 scene.forward=(richtung(x=Richtung)) scene.center=Man1.kopf.pos+Man1.pos+(0,8,0) #scene.forward=(0,1,0) print scene.center